import { Router } from "vue-router";
import { storage } from "../utils/storage";
import { ElMessage } from "element-plus";

export const setUpGuard = (routerData: Router) => {
  routerData.beforeEach((to) => {
    // 设置标题
    if (to.meta.title) {
      //判断是否有标题
      document.title = to.meta.title as string;
    }
    const isAuthenticated = storage.get("token");
    // 如果用户未登录
    if (!isAuthenticated) {
      // 检查目标路由是否允许游客访问
      if (to.meta && to.meta.visitor) {
        // 允许游客访问，无需重定向
        // 这里可以直接调用 next() 来继续路由跳转，但在这个守卫中我们不需要显式调用，因为 Vue Router 会自动处理
      } else {
        // 不允许游客访问，且目标路由不是登录页面或未找到页面
        if (to.name !== "Login" && to.name !== "NotFound") {
          // 将用户重定向到登录页面
          if(to.name !== "Login"){
            ElMessage('您还没有登录，请先进行登录！')
          }
          return { name: "Login" };
        }
      }
    }
    if (isAuthenticated && to.name === "Login") {
      // 已经登录的情况，重定向到主页
      return { name: "FrontHome" };
    }
  });
};
